#ifndef _XX_YY_BMOCK_STRICT_MOCKS
#define _XX_YY_BMOCK_STRICT_MOCKS

#include "detail/bmock_mock_type.hpp"

namespace bmock {
	struct strict_mocks : public mocks_type, protected std::list<exp_ptr> {
		void add_expectation(exp_ptr new_exp);
		void expect_call_times_range(int min_, int max_);
		void not_received();
		void expect_call(const func_spec& f, const location& loc);
		void expect_arguments(const arg_list& args);
		exp_ptr get_latest() const;
		void set_result(const result_ptr& ptr);
		std::pair<exp_ptr,boost::logic::tribool> check(const func_spec& f, const arg_list& args);
		bool empty() const;
		bool is_done() const;
		void pop_last();
	};
}

#endif